home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / parallax / maspar_d.tar / maspar_dec / pz2mpls.h < prev    next >
C/C++ Source or Header  |  1992-09-14  |  13KB  |  407 lines

  1. /**********************************************************************
  2.  ***                                                                ***
  3.  ***    PARZ-Library for MasPar MPL                                 ***
  4.  ***                                                                ***
  5.  ***    (c) by University Stuttgart, Germany, 1991                  ***
  6.  ***                                                                ***
  7.  ***    Don't edit this file !!!                                    ***
  8.  ***                                                                ***
  9.  *********************************************************************/
  10.  
  11. #ifndef PZ2MPLSH
  12. #define PZ2MPLSH
  13.  
  14. #ifndef IN_EMIT
  15. #ifndef GRAPHC
  16. #include <stdio.h>
  17. #include <math.h>
  18. #include <mpl.h>
  19. #include <time.h>
  20. #include <maspar/mp_time.h>
  21. #include <maspar/mp_libc.h>
  22. #endif
  23. #endif
  24.  
  25. /********************* DEFINES **************************************/
  26.  
  27. #define SINGLE 0
  28. #define DOUBLE 1
  29.  
  30. #if 0
  31. #define PRECISION  DOUBLE
  32. #endif
  33.  
  34. typedef long           INT;
  35. typedef unsigned char  CHAR;
  36.  
  37. #if PRECISION == DOUBLE
  38. typedef double         REAL;
  39. #else
  40. typedef float          REAL;
  41. #endif
  42.  
  43. typedef long           BOOL;
  44.  
  45. typedef union {
  46.         INT   i;
  47.         CHAR  c;
  48.         BOOL  b;
  49.         REAL  r;
  50.         } MemItem;
  51.  
  52. #ifndef IN_EMIT
  53. #ifndef GRAPHC
  54.  
  55. #define PINT     plural INT
  56. #define PCHAR    plural CHAR
  57. #define PREAL    plural REAL
  58. #define PBOOL    plural BOOL
  59.  
  60. #define isActive()    (actPE [i])
  61.  
  62. #define Eval(a)       callIt|=(int)globalor((plural int)(activePE[i]=(activePE[i]&126)|(isActive()?(a):0))&(plural char)1);\
  63.                       actPE[i]=((plural short)activePE[i])&(plural short)1
  64.  
  65. #define ForAllPE        for(i=0;i<PEMAX;i++) if (((plural int) InitialActSet [i]) & (plural int) 1)
  66. #define ForAllActivePE  for(i=0;i<PEMAX;i++) if (isActive()) 
  67.  
  68. #define    NO_REDUCE 0
  69. #define   MIN_REDUCE 1
  70. #define   MAX_REDUCE 2
  71. #define   SUM_REDUCE 3
  72. #define   MUL_REDUCE 4
  73. #define   AND_REDUCE 5
  74. #define    OR_REDUCE 6
  75. #define FIRST_REDUCE 7
  76. #define  LAST_REDUCE 8
  77. #define   OWN_REDUCE 9
  78.  
  79. /********************* TYPES *****************************************/
  80.  
  81. typedef plural union {
  82.         INT   i;
  83.         CHAR  c;
  84.         BOOL  b;
  85.         REAL  r;
  86.         } PMemItem;
  87.  
  88. typedef PMemItem *plural PMemPtr;
  89.  
  90. typedef struct {
  91.          MemItem         *scalar;
  92.         PMemItem         *vector;
  93.          int              vecSize;
  94.          int              indIndex;
  95.      struct timeval   startTime;
  96.         } ACTRECORD;
  97.  
  98.  
  99. /************************** VARIABLES *******************************/
  100.  
  101. /*** predeclared variables ***/
  102.  
  103. extern  MemItem  _MAXTRANS;
  104. extern  MemItem  _ACTTRANS;
  105. extern  MemItem  _SRESULT;
  106. extern  MemItem  _DONE;
  107. extern  MemItem  _TERMCH;
  108. extern PMemItem  *_VRESULT;
  109. extern PMemItem  *_ID;
  110.  
  111. /*** input / output ***/
  112.  
  113. extern FILE  *in, *out;
  114.  
  115. /*** maintenance ***/
  116.  
  117. extern plural char       *activePE, *InitialActSet;
  118. extern plural short      *actPE;
  119. extern        MemItem    *SDisp [];
  120. extern       PMemItem    *VDisp [];
  121. extern        MemItem   **SIndDisp;
  122. extern       PMemPtr     *plural VIndDisp;    
  123. extern        int         IndIndex, *IndSizeDisp;
  124. extern        INT         outPortTmp, inPortTmp;
  125. extern        int         callIt, indent;
  126. extern       PMemItem    *vTmp, *vTmp2;
  127. extern        MemItem     tmpItem, tmpItem2;
  128. extern struct timezone    timeZone;
  129. extern        char       *cntrlStr;
  130.  
  131. /*************************** FUNCTIONS ******************************/
  132.  
  133. /*** maintenance ***/
  134.  
  135. extern void InitDisplay (), ResetDisplay (int level, ACTRECORD  *buf);
  136. extern void DPUStartTime (struct timeval *startTime), 
  137.             DPUPrintTime (struct timeval *startTime, char *procName);
  138.  
  139. extern void SetAct (int    start, int    ende, char  *str);
  140. extern void SetSet (MemItem  *arrayStart,
  141.          int       start,
  142.          int       ende,
  143.          char     *str), 
  144.             VSetSet (PMemItem  *plural arrayStart,
  145.           int       start,
  146.           int       ende,
  147.           char     *str);
  148. extern void SetPos (int  *startPtr,
  149.          int   startValue,
  150.          int   length);
  151.  
  152. extern        INT      NewSMem (int size);
  153. extern plural INT      NewVMem (int size);
  154. extern        MemItem *SRef (INT refIndex);
  155. extern       PMemItem *plural VRef (plural INT refIndex);
  156.  
  157. extern void INIT (int       argc,
  158.        char     *argv [],
  159.        int       NumOfPEs,
  160.        int       NumOfPorts,
  161.        int       globalVecSize,
  162.        MemItem  *scaAdr,
  163.        PMemItem  *vecAdr,
  164.        int       hasNew,
  165.        char     *progName,
  166.        int       xnetUse,
  167.        int       xDim,
  168.        int       yDim,
  169.        int       Recording,
  170.        int       UsesGraphics), 
  171.          EXIT (int value), 
  172.          Indent (int num);
  173.  
  174. extern int STATUS (BOOL *to);
  175.  
  176. /*** stack ***/
  177.  
  178. extern void PUSHSi (INT val), PUSHSb (BOOL val), PUSHSr (REAL val), PUSHSc (CHAR val);
  179. extern void PUSHVi (int indx, plural INT val), 
  180.             PUSHVr (int indx, plural REAL val), 
  181.             PUSHVb (int indx, plural INT val), 
  182.             PUSHVc (int indx, plural CHAR val);
  183.  
  184. extern INT   POPSi  ();
  185. extern REAL  POPSr  ();
  186. extern BOOL  POPSb  ();
  187. extern CHAR  POPSc  ();
  188. extern PINT  POPVi  (int indx);
  189. extern PREAL POPVr  (int indx);
  190. extern PBOOL POPVb  (int indx);
  191. extern PCHAR POPVc  (int indx);
  192.  
  193. /*** control statements ***/
  194.  
  195. extern void PushActSet_ (), _PopActSet ();
  196.  
  197. /*** math ***/
  198.  
  199. extern INT   RandomI ();
  200. extern CHAR  RandomC ();
  201. extern INT   RandomB ();
  202. extern REAL  RandomR ();
  203.  
  204. extern plural INT   VRandomI ();
  205. extern plural CHAR  VRandomC ();
  206. extern plural INT   VRandomB ();
  207. extern plural REAL  VRandomR ();
  208.  
  209. extern INT  _MOD (INT lhs, INT rhs);
  210. extern INT  _IPOWER (INT base, INT exp);
  211. extern REAL _RIPOWER (REAL rb, INT ie), _RRPOWER (REAL base, REAL exp);
  212.  
  213. extern plural INT  _VMOD (plural INT lhs, plural INT rhs), 
  214.                     Vabs (plural INT val);
  215. extern plural INT  _VIPOWER (plural INT base, plural INT exp);
  216. extern plural REAL _VRIPOWER (plural REAL rb, plural INT ie), 
  217.                    _VRRPOWER (plural REAL  base, plural REAL  exp);
  218.  
  219. /*** input / output ***/
  220.  
  221. extern void OpenInput (char *name),  OpenInputChars (MemItem *name),  
  222.             CloseInput ();
  223. extern void OpenOutput (char *name), OpenOutputChars (MemItem *name), 
  224.             CloseOutput ();
  225.  
  226. extern void  InBool (BOOL *var),  InChars (CHAR *var, INT maxLen),  
  227.              OutChars (CHAR *buf, INT min);
  228. extern void VOutBool (plural BOOL buf);
  229. extern void VInChars (plural CHAR *plural var, INT maxLen), 
  230.             VOutChars (plural CHAR *buf, INT min);
  231. extern plural INT   VInInt ();
  232. extern plural REAL  VInReal ();
  233. extern plural BOOL VInBool ();
  234.  
  235. /*** strings ***/
  236.  
  237. extern void _StrCopy (CHAR *to, char *str);
  238. extern INT  _StrCmpCon (CHAR *str1, char *str2);
  239. extern INT  _StrCmp (CHAR *str1, CHAR *str2);
  240.  
  241. extern plural INT _VStrCmpCon (plural CHAR *str1, char *str2);
  242. extern plural INT _VStrCmp (plural CHAR *str1, plural CHAR *str2);
  243.  
  244. /*** reduction ***/
  245.  
  246. /*** reduce variable ***/
  247.  
  248.  
  249. extern void   GenProp_ (INT    outPort,
  250.            INT    inPort,
  251.            int    reduceCode,
  252.            void (*reduceLabel) (),
  253.            int    OutAll,
  254.            int    InAll), 
  255.              _GenProp ();
  256. extern void   GenPropI (int   indx,
  257.            plural INT  *to,
  258.            plural INT   from), 
  259.               GenPropR (int    indx,
  260.            plural REAL  *to,
  261.            plural REAL   from), 
  262.               GenPropC (int    indx,
  263.            plural CHAR  *to,
  264.            plural CHAR   from), 
  265.               GenPropB (int   indx,
  266.            plural BOOL *to,
  267.            plural BOOL  from);
  268.  
  269. extern void  RedSumI (plural INT var), RedMulI (plural INT var);
  270. extern void  RedSumR (plural REAL var), RedMulR (plural REAL var);
  271.  
  272. extern void  RedMaxI (plural INT var), RedMinI (plural INT var);
  273. extern void  RedMaxR (plural REAL var), RedMinR (plural REAL var);
  274. extern void  RedMaxC (plural CHAR var), RedMinC (plural CHAR var);
  275. extern void  RedMaxB (plural BOOL var), RedMinB (plural BOOL var);
  276. extern void  RedAndB (plural BOOL var), RedOrB (plural BOOL var);
  277.  
  278. extern void  RedFirstI (plural INT var), RedLastI (plural INT var);
  279. extern void  RedFirstR (plural REAL var), RedLastR (plural REAL var);
  280. extern void  RedFirstC (plural CHAR var), RedLastC (plural CHAR var);
  281. extern void  RedFirstB (plural BOOL var), RedLastB (plural BOOL var);
  282.  
  283. extern void   Red_ ();
  284. extern INT   _RedI ();
  285. extern REAL  _RedR ();
  286. extern CHAR  _RedC ();
  287. extern BOOL  _RedB ();
  288.  
  289. extern void   OwnRedI (int   indx,      plural INT   val), 
  290.               OwnRedR (    int   indx,      plural REAL  val);
  291. extern void   OwnRedC (      int   indx, plural CHAR  val), 
  292.               OwnRedB ( int   indx,      plural BOOL  val);
  293.  
  294. extern void   OwnRed  ();
  295. extern INT   _OwnRedI (void  (*reduceLabel) ());
  296. extern REAL  _OwnRedR (void  (*reduceLabel) ());
  297. extern CHAR  _OwnRedC (void  (*reduceLabel) ());
  298. extern BOOL  _OwnRedB (void  (*reduceLabel) ());
  299.  
  300. /*** propagate reduce ***/
  301.  
  302. extern void  PRedSumI (PMemItem      *source,
  303.                plural INT   **target), 
  304.              PRedMulI (PMemItem      *source,
  305.                plural INT   **target);
  306. extern void  PRedSumR (PMemItem      *source,
  307.                plural REAL  **target),
  308.              PRedMulR (PMemItem      *source,
  309.                plural REAL  **target);
  310.  
  311. extern void  PRedMaxI (PMemItem      *source,
  312.                plural INT   **target), 
  313.              PRedMinI (PMemItem      *source, plural INT   **target);
  314.  
  315. extern void  PRedMaxR (PMemItem      *source,
  316.                plural REAL  **target), PRedMinR (PMemItem      *source,
  317.                plural REAL  **target);
  318. extern void  PRedMaxC (PMemItem      *source,
  319.                plural CHAR  **target), PRedMinC (PMemItem      *source,
  320.                plural CHAR  **target);
  321. extern void  PRedMaxB (PMemItem      *source,
  322.                plural INT   **target), PRedMinB (PMemItem      *source,
  323.                plural INT   **target);
  324.  
  325. extern void  PRedAndB (PMemItem      *source,
  326.                plural INT   **target),  PRedOrB (PMemItem      *source,
  327.                plural INT   **target);
  328.  
  329. extern void  PRedFirstI (PMemItem      *source,
  330.                  plural INT   **target), PRedLastI (PMemItem      *source,
  331.                  plural INT   **target);
  332. extern void  PRedFirstR (PMemItem      *source,
  333.                plural REAL  **target), PRedLastR (PMemItem      *source,
  334.                plural REAL  **target);
  335. extern void  PRedFirstC (PMemItem      *source,
  336.                plural CHAR  **target), PRedLastC (PMemItem      *source,
  337.                plural CHAR  **target);
  338. extern void  PRedFirstB (PMemItem      *source,
  339.                plural INT   **target), PRedLastB (PMemItem      *source,
  340.                plural INT   **target);
  341.  
  342. /*** data transfer ***/
  343.  
  344. extern void    Connect_ (INT fromPort, INT toPort),   Connect (int indx,
  345.           plural INT toPE);
  346. extern void  Biconnect_ (INT fromPort, INT toPort), Biconnect (int indx, plural INT toPE);
  347. extern void Disconnect (INT fromPort), DisconnectAll ();
  348.  
  349. extern void ConnectIn_ (INT inPort),    _ConnectIn ();
  350. extern void ConnectInOut_ (INT inPort, INT outPort), _ConnectInOut ();
  351.  
  352. extern plural BOOL ConnectedIn (int indx),  ConnectedInOut (int indx);
  353. extern plural BOOL ConnectedOut (int indx, INT outPort), ConnectedOutIn (int  indx,
  354.                 INT  outPort,
  355.                 INT  inPort);
  356.  
  357. extern void _LOAD (PMemItem  *plural to,
  358.         MemItem  *from,
  359.         int       size), 
  360.            _STORE (MemItem  *to,
  361.          PMemItem  *plural from,
  362.          int       size), 
  363.            _LOAD_PE (int       pe,
  364.            PMemItem  *plural to,
  365.            MemItem  *from,
  366.            int       size), 
  367.            _STORE_PE (int       pe,
  368.         PMemItem  *plural to,
  369.         MemItem  *from,
  370.         int       size);
  371. extern void _MOVE_VS (PMemItem  *plural to,
  372.            MemItem  *from,
  373.            int       size), 
  374.             _MOVE_VV (PMemItem  *plural to,
  375.            PMemItem  *plural from,
  376.            plural     int    size);
  377.  
  378. extern plural BOOL EQUAL_VS (PMemItem *plural vec,
  379.               MemItem *sca,
  380.               int      amount);
  381.  
  382. /*** recording ***/
  383.  
  384. extern void EmitRecording (char statementTyp);
  385. extern void IncStatCounter ();
  386.  
  387.  
  388. /** graphics **/
  389.  
  390. #endif  /* GRAPHC */
  391.  
  392. typedef struct colrec { MemItem r, g, b; } COLREC;
  393.  
  394. extern int acu_init_x (), acu_OpenW ();
  395. extern int acu_CloseW (), acu_SelectW ();
  396. extern int acu_WSize (), acu_SetColor (), acu_VSetColor ();
  397. extern int acu_SetPixel (), acu_VSetPixel (), acu_DrawChar ();
  398. extern int acu_GetPixel (), acu_MoveTo (), acu_LineTo ();
  399. extern int acu_DrawString (), acu_DrawInt (), acu_DrawBool ();
  400. extern int acu_DrawReal (), acu_DrawFixPt (), acu_DrawImage ();
  401.  
  402. #endif  /* IN_EMIT */
  403.  
  404. #endif  /* PZ2MPLH */
  405.  
  406. /*** End of pz2mpl.h ***/
  407.